#ifndef _LED_MODULE_H_
#define _LED_MODULE_H_

#include "led_drv_pin.h"
#include "led_drv_pwm.h"
#include "led_drv_ws2812b.h"

//声明LED状态枚举
typedef enum
{
    LED_STATE_OFF = 0,        //关灯
    LED_STATE_ON,             //开灯
    LED_STATE_TOGGLE,         //翻转
    LED_STATE_FADE_IN,        //渐亮
    LED_STATE_FADE_OUT,       //渐灭
    LED_STATE_SET_COLOR,      //设置颜色
}led_state_t;


//LED模块结构体
typedef struct led_module
{
    //私有成员
    led_driver_t *led_drv;    //LED驱动句柄

    //对外公有成员
    unsigned char led_count;      //led灯珠数量

    int (*init)(struct led_module *_this);
    int (*start)(struct led_module *_this);
    int (*handler)(struct led_module *_this);
    int (*get_led_count)(struct led_module *_this);

}led_module_t;


//LED模块配置信息结构体
typedef struct led_module_cfg
{
    char *drv_name;              //驱动方式
    //在这里还可以添加更多配置参数
}led_module_cfg_t;

led_module_t *led_module_create(struct led_module *_this, led_module_cfg_t *cfg);

#endif


